﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ClasesLibreria.dominio;
using ClasesLibreria.dao;
using System.Configuration;

public partial class AltaFactura : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            Factura fac = new Factura();
            fac.UsuarioAlta = (Usuario)Session["usuario"];
            fac.FechaAlta = DateTime.Now;
            txtFacturaFecha.Text = fac.FechaAlta.ToString();
            Session["factura"] = fac;

            // Lleno la lista de barrios
            ddlBarrios.DataSource = DAOBarrio.queryBarrios(Database.connectionString());
            ddlBarrios.DataTextField = "nombreBarrio";
            ddlBarrios.DataValueField = "idBarrio";
            ddlBarrios.DataBind();

            ddlBarrios.Items.Insert(0, new ListItem("Selecciones Barrio", string.Empty));



            // Lleno la lista de productos
            ddlProductos.DataSource = DAOProducto.queryProductos(Database.connectionString(), null);
            ddlProductos.DataTextField = "producto_nombre";
            ddlProductos.DataValueField = "producto_codigo";
            ddlProductos.DataBind();

            ddlProductos.Items.Insert(0, new ListItem("Selecciones Producto", string.Empty));
        }

    }

    protected void cmdAgregarProducto_Click(object sender, EventArgs e)
    {
        if (int.Parse(txtCantidad.Text) != 0)
        {
            Factura fac = (Factura)Session["factura"];
            FacturaItem itm = new FacturaItem();
            itm.Producto = (Producto)Session["producto"];
            itm.Cantidad = int.Parse(txtCantidad.Text);
            itm.PrecioUnitario = itm.Producto.PrecioVenta;
            fac.agregarItem(itm);
            Session["factura"] = fac;
            gvItems.DataSource = fac.ListaItems;
            gvItems.DataBind();

            Session["producto"] = null;
            lblPrecioUnitario.Text = null;
            txtCantidad.Text = "";
            ddlProductos.SelectedIndex = 0;
        }
    }
    protected void ddlProductos_SelectedIndexChanged(object sender, EventArgs e)
    {
        Producto prd = DAOProducto.queryProductoByCodigo(
            Database.connectionString(),
            int.Parse(ddlProductos.SelectedValue));
        Session["producto"] = prd;
        lblPrecioUnitario.Text = prd.PrecioVenta.ToString();
    }
    protected void cmdGrabar_Click(object sender, EventArgs e)
    {
        Factura fac = (Factura)Session["factura"];
        fac.ApellidoCliente = txtClienteApellido.Text;
        fac.NombreCliente = txtClienteNombre.Text;
        fac.Calle = txtClienteCalle.Text;
        fac.CalleNumero = int.Parse(txtClienteCalleNumero.Text);
        Session["factura"] = fac;
        DAOFactura.insertarFactura(fac, Database.connectionString());
        Response.Redirect("ConsultaFactura.aspx");
    }

    protected void eliminarProducto(object sender, GridViewDeleteEventArgs e)
    {
        Factura fac = (Factura)Session["factura"];
        FacturaItem itemEliminar = new FacturaItem();

        foreach (FacturaItem itm in fac.ListaItems)
        {
            if (itm.Producto.Codigo == int.Parse(gvItems.DataKeys[e.RowIndex].Value.ToString()))
            {
                itemEliminar = itm;
                break;
            }
        }
        fac.ListaItems.Remove(itemEliminar);
        Session["factura"] = fac;
        gvItems.DataSource = fac.ListaItems;
        gvItems.DataBind();
    }
    protected void gvItems_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
    protected void ddlBarrios_SelectedIndexChanged(object sender, EventArgs e)
    {
        Factura fac = (Factura)Session["factura"];
        Barrio bar = new Barrio();
        bar.Id = int.Parse(ddlBarrios.SelectedValue);
        bar.Nombre = ddlBarrios.SelectedItem.Text;
        fac.Barrio = bar;
        Session["factura"] = fac;
    }

    public void limpiarForm()
    {
        txtFacturaNumero.Text = null;
        txtFacturaFecha.Text = null;
        txtClienteApellido.Text = null;
        txtClienteNombre.Text = null;
        txtClienteCalleNumero.Text = null;
        txtClienteCalle.Text = null;
        ddlBarrios.SelectedIndex = 0;
        ddlProductos.SelectedIndex = 0;
        lblPrecioUnitario.Text = null;
        txtCantidad.Text = null;
        gvItems.DeleteRow(0);


    }
    protected void cmdCancelar_Click(object sender, EventArgs e)
    {
        limpiarForm();
    }
}